package com.view;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.model.Acuerdo;
import com.validators.DateRange;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
@DateRange(entity = Acuerdo.class, start = "fechaDesde", end = "fechaHasta", objetoInterno = "proveedor", daoName = "acuerdoDAO", message = "El rango de fechas ingresado es inválido o bien el mismo se solapa con otro en el sistema ")
public class AcuerdoView extends BaseView {

	@NotNull(message = "Debe ingresar el proveedor")
	private ProveedorView proveedor;

	@NotNull(message = "Debe ingresar la fecha desde")
	private Date fechaDesde;

	@NotNull(message = "Debe ingresar la fecha hasta")
	private Date fechaHasta;

	private Boolean descuentoPorMontoTotal;

	private BigDecimal monto;

	private Double descuento;

	@Valid
	@Size(min = 1, max = 10000, message = "Se debe ingresar al menos un descuento")
	private List<AcuerdoDetalleView> listaAcuerdoDetalle;

	public AcuerdoView(Long id, ProveedorView proveedor, Date fechaDesde,
			Date fechaHasta, Boolean descuentoPorMontoTotal, BigDecimal monto,
			Double descuento, List<AcuerdoDetalleView> listaAcuerdoDetalle) {
		this.id = id;
		this.proveedor = proveedor;
		this.fechaDesde = fechaDesde;
		this.fechaHasta = fechaHasta;
		this.descuentoPorMontoTotal = descuentoPorMontoTotal;
		this.monto = monto;
		this.descuento = descuento;
		this.listaAcuerdoDetalle = listaAcuerdoDetalle;
	}

	public AcuerdoView() {
		this(null, new ProveedorView(), null, null, Boolean.FALSE, null, null,
				new ArrayList<AcuerdoDetalleView>());
	}

	public ProveedorView getProveedor() {
		return proveedor;
	}

	public void setProveedor(ProveedorView proveedor) {
		this.proveedor = proveedor;
	}

	public Date getFechaDesde() {
		return fechaDesde;
	}

	public void setFechaDesde(Date fechaDesde) {
		this.fechaDesde = fechaDesde;
	}

	public Date getFechaHasta() {
		return fechaHasta;
	}

	public void setFechaHasta(Date fechaHasta) {
		this.fechaHasta = fechaHasta;
	}

	public Boolean getDescuentoPorMontoTotal() {
		return descuentoPorMontoTotal;
	}

	public void setDescuentoPorMontoTotal(Boolean descuentoPorMontoTotal) {
		this.descuentoPorMontoTotal = descuentoPorMontoTotal;
	}

	public BigDecimal getMonto() {
		return monto;
	}

	public void setMonto(BigDecimal monto) {
		this.monto = monto;
	}

	public Double getDescuento() {
		return descuento;
	}

	public void setDescuento(Double descuento) {
		this.descuento = descuento;
	}

	public List<AcuerdoDetalleView> getListaAcuerdoDetalle() {
		return listaAcuerdoDetalle;
	}

	public void setListaAcuerdoDetalle(
			List<AcuerdoDetalleView> listaAcuerdoDetalle) {
		this.listaAcuerdoDetalle = listaAcuerdoDetalle;
	}

}
